跳到主要内容

MongoDb 使用笔记

以下是 MongoDB 的登录方法和常用操作命令的详细说明,包括如何登录数据库、基础操作和常用查询命令。


1. 登录 MongoDB

1.1 登录到 MongoDB

在终端中使用 mongomongosh(推荐)登录 MongoDB 数据库。

本地登录

mongosh

如果使用旧版 MongoDB,可以使用:

mongo

登录指定数据库

mongosh <数据库名>

示例:

mongosh mydatabase

登录远程 MongoDB

mongosh "mongodb://<用户名>:<密码>@<主机>:<端口>/<数据库名>"

示例:

mongosh "mongodb://admin:password@127.0.0.1:27017/mydatabase"
  • <用户名>:MongoDB 用户名。
  • <密码>:MongoDB 用户密码。
  • <主机>:MongoDB 服务器地址(如 127.0.0.1)。
  • <端口>:MongoDB 端口号(默认是 27017)。
  • <数据库名>:要连接的数据库名称。

1.2 登录到 MongoDB Docker 容器

如果 MongoDB 运行在 Docker 容器中,可以通过以下方式登录:

  1. 进入容器

    docker exec -it <container_name_or_id> bash
  2. 使用 mongosh 登录

    mongosh

或者直接运行:

docker exec -it <container_name_or_id> mongosh

2. 常用命令

2.1 数据库相关操作

查看所有数据库

show dbs

切换数据库

use <数据库名>

示例:

use mydatabase

创建数据库

MongoDB 不需要显式创建数据库。只需切换到一个不存在的数据库并插入数据,数据库会自动创建。

删除数据库

db.dropDatabase()

2.2 集合(表)相关操作

查看当前数据库中的所有集合

show collections

创建集合

db.createCollection("<集合名>")

示例:

db.createCollection("users")

删除集合

db.<集合名>.drop()

示例:

db.users.drop()

2.3 插入、查询、更新和删除数据

插入数据

db.<集合名>.insertOne({ <字段名>: <>, <字段名>: <>, ... })

示例:

db.users.insertOne({ name: "Alice", age: 25, email: "alice@example.com" })

批量插入:

db.<集合名>.insertMany([
{ <字段名>: <>, ... },
{ <字段名>: <>, ... }
])

示例:

db.users.insertMany([
{ name: "Bob", age: 30, email: "bob@example.com" },
{ name: "Charlie", age: 35, email: "charlie@example.com" }
])

查询数据

db.<集合名>.find(<查询条件>)
  • 查询所有数据:

    db.users.find()
  • 查询特定条件的数据:

    db.users.find({ age: { $gt: 25 } })
  • 查询指定字段:

    db.users.find({}, { name: 1, email: 1, _id: 0 })
  • 查询单条数据:

    db.users.findOne({ name: "Alice" })

更新数据

db.<集合名>.updateOne(<查询条件>, { $set: { <字段名>: <新值> } })

示例:

db.users.updateOne({ name: "Alice" }, { $set: { age: 26 } })

批量更新:

db.<集合名>.updateMany(<查询条件>, { $set: { <字段名>: <新值> } })

示例:

db.users.updateMany({ age: { $lt: 30 } }, { $set: { status: "young" } })

删除数据

db.<集合名>.deleteOne(<查询条件>)

示例:

db.users.deleteOne({ name: "Alice" })

批量删除:

db.<集合名>.deleteMany(<查询条件>)

示例:

db.users.deleteMany({ age: { $lt: 30 } })

2.4 索引操作

创建索引

db.<集合名>.createIndex({ <字段>: 1 })

示例:

db.users.createIndex({ email: 1 })

查看索引

db.<集合名>.getIndexes()

删除索引

db.<集合名>.dropIndex("<索引名>")

示例:

db.users.dropIndex("email_1")

2.5 用户管理

创建用户

db.createUser({
user: "<用户名>",
pwd: "<密码>",
roles: [{ role: "<角色>", db: "<数据库名>" }]
})

示例:

db.createUser({
user: "admin",
pwd: "password",
roles: [{ role: "readWrite", db: "mydatabase" }]
})

查看用户

db.getUsers()

删除用户

db.dropUser("<用户名>")

示例:

db.dropUser("admin")

2.6 聚合操作

聚合查询

db.<集合名>.aggregate([
{ <阶段1> },
{ <阶段2> },
...
])

示例:按年龄分组并统计人数

db.users.aggregate([
{ $group: { _id: "$age", count: { $sum: 1 } } }
])

2.7 备份与还原

备份数据库

使用 mongodump 工具备份:

mongodump --host <主机> --port <端口> --db <数据库名> --out <备份路径>

示例:

mongodump --host 127.0.0.1 --port 27017 --db mydatabase --out /backup/

还原数据库

使用 mongorestore 工具还原:

mongorestore --host <主机> --port <端口> --db <数据库名> <备份路径>

示例:

mongorestore --host 127.0.0.1 --port 27017 --db mydatabase /backup/mydatabase

2.8 退出 MongoDB

mongoshmongo 中输入以下命令退出:

exit

2.9 其他常用命令

查看当前数据库

db

查看数据库状态

db.stats()

查看集合文档总数

db.<集合名>.countDocuments()

示例:

db.users.countDocuments()

总结

  • 登录 MongoDB:使用 mongoshmongo 登录本地或远程数据库。
  • 常用命令:包括数据库和集合管理、插入/查询/更新/删除数据等。
  • 备份与还原:使用 mongodumpmongorestore 进行数据备份和恢复。

如果有其他问题或需求,请随时告诉我!